1. Field of the Invention
The present invention relates generally to computer-assisted design (CAD) systems, and in particular, to a method for cell selection during feature generation in a solid modeling system.
2. Description of the Related Art
Over the last decade, designers have changed their fundamental approach to graphics design, moving from 2D drawing systems to 3D solid modeling systems. New software makes solid modeling technology available and affordable to virtually anyone.
Solid modeling is a technique that allows designers to create dimensionally accurate 3D solid models in 3D space represented within a computer, rather than traditional 2D drawings. 3D solid models include significantly more engineering data than 2D drawings, including the volume, bounding surfaces, and edges of a design.
With the graphics capabilities of today""s computers, these 3D solid models may be viewed and manipulated on a monitor. In addition to providing better visualization, 3D solid models may be used to automatically produce 2D drawing views, and can be shared with manufacturing applications and the like.
Some 3D solid modeling systems generate parametric feature-based models. A parametric feature-based model is comprised of intelligent features, such as holes, fillets, chamfers, etc. The geometry of the parametric feature-based model is defined by underlying mathematical relationships (i.e., parameters) rather than by simple unrelated dimensions, which makes them easier to modify. These systems preserve design intent and manage it after every change to the model.
Moreover, these features automatically change as the model is changed. The system computes any related changes to parts of the model that are dependent on a parameter, and automatically updates the entire model when the parameter is changed. For example, a through-hole will always completely go through a specified part, even if the part""s dimensions are changed to be bigger than the hole. Additionally, the geometry/volume of one part may be used to create or modify the geometry of a second part (referred to as the base or host part). The part resulting from the combination of the first part and base part is said to be derived from the first part.
Examples of derived parts include using the first part as a toolbody to perform a boolean operation (i.e., a join/union, intersect, or cut/subtract volume operation) on the base part thereby creating a combined part. A toolbody is a part (e.g., a first part) that is aligned with a base part and then used to perform a boolean operation on the base part. The combination of the base part and the toolbody in accordance with the boolean operation specified results in a combined part. Another example of a derived part includes placing an assembly feature/constraint through an occurrence of the first part, making the second part a unique variation on the first part. An assembly constraint determines how instanced parts and subassemblies are placed relative to each other. Assembly constraints reduce the degrees of freedom of each part. Accordingly, the second part is derived from and is equal to the first part with an assembly constraint (i.e., when the first part has an assembly constraint that restricts how the first part may interact with other parts).
The process of identifying dependent features on derived parts is straightforward if all base parts are native parts stored in a single drawing file. However, if a base part is either non-local (e.g., stored in an external file) or is a non-native part (e.g., a part designed using another solid modeling system/application), the process is more difficult because of the lack of access to information such as the part history graph of the base part. Such access to information is necessary in order to establish or update a connection of a derived part.
Consequently, there is a need in the art for a solid modeling system that supports non-local or non-native parts, maintains cross-part dependencies without modifying a base part, and ensures that dependencies get followed/chased when either a cross reference (XREF) of a non-native part is refreshed/recomputed, or an editing session on a non-native part is completed.
In a solid based modeler, a user may create and/or use non-native or non-local parts in a 3d solid model. Further parts may be derived from such non-native or non-local parts. Additionally, various features of the parts may connect or utilize the non-native or non-local parts.
One or more embodiments of the invention provide a method, system, and article of manufacture for updating a host drawing and features maintained within a host drawing. Non-local or non-native parts may be accessed and utilized in a drawing. For example, a part may be based on or derived from a non-local or non-native part. When a part is derived from another part, the derived part is said to be dependent on a base or host part. When a part is dependent on a non-local or non-native base part, the derived part is referred to as an orphaned part and cross references (XREF) the base part.
Information regarding such cross referenced non-local or non-native parts may not be accessible. Accordingly, when a XREF to a non-local or non-native part is encountered, a bridge node is utilized. A bridge node carries a reference to a base part and holds the derived part edge orderings (an element that provides the computation order for reconstructing a part) in lieu of modifying the base part itself. The bridge node is utilized to maintain cross-part dependencies without modifying the base part, and to ensure these dependencies get chased when either the reference to a non-native/non-local part is refreshed/recomputed, or an editing session on a non-native part is completed.
Features of a node/part may be suppressed/excluded as a result of the interaction or combination with another node/part. When a node/part has been modified and the drawing containing the part has not been refreshed to reflect the changes in a part, the node/part is scheduled for update. The update process traverses a dependency graph for the node part to determine if any nodes that are dependent on the updated node also need to be updated. For example, a derived part may need to have certain features suppressed as a result of the changes to the base part.
The bridge node may be utilized to reflect any changes to parts dependent on the XREF part. For example, if a base part or feature on a base part is suppressed/excluded, the corresponding bridge node for that feature is suppressed. Similarly, the bridge node for a base part could be suppressed if the base part""s database were unloaded from memory. In any case, parts dependent on the suppressed bridge node or features that connect to the suppressed bridge node may also be suppressed. Accordingly, the bridge node provides a mechanism for updating parts and features without modifying the base part or derived part.